package net.siufung.core.result;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 结果失败枚举
 * @author 陈建峰
 * @since 2022/4/23 10:51 下午
 */
@Getter
@AllArgsConstructor
public enum ResultFail implements IResultType {

    /**
     * 数据请求失败
     */
    ERROR(ResultErrorCode.DEFAULT_ERROR_CODE, "数据请求失败"),
    /**
     * 缺少必要的请求参数
     */
    RESOURCE_NOT_FOUND_ERROR(ResultErrorCode.RESOURCE_NOT_FOUND_CODE, "请求资源不存在"),
    /**
     * 缺少必要的请求参数
     */
    PARAM_MISS_ERROR(ResultErrorCode.PARAM_MISS_CODE, "缺少必要的请求参数"),
    /**
     * 缺少主键参数
     */
    PARAM_MISS_ID_ERROR(ResultErrorCode.PARAM_MISS_CODE, "缺少主键参数"),
    /**
     * 请求参数类型错误
     */
    PARAM_TYPE_ERROR(ResultErrorCode.PARAM_TYPE_ERROR_CODE, "请求参数类型错误"),
    /**
     * 请求参数绑定错误
     */
    PARAM_BIND_ERROR(ResultErrorCode.PARAM_BIND_ERROR_CODE, "请求参数绑定错误"),
    /**
     * 请求参数格式不合规则
     */
    PARAM_VALID_ERROR(ResultErrorCode.PARAM_VALID_ERROR_CODE, "请求参数格式不合规则"),
    /**
     * 请求参数重复
     */
    PARAM_REPEAT_ERROR(ResultErrorCode.PARAM_REPEAT_ERROR_CODE, "请求参数重复"),
    /**
     * 不支持当前请求方法
     */
    METHOD_NOT_SUPPORTED_ERROR(ResultErrorCode.METHOD_NOT_SUPPORTED_CODE, "不支持当前请求方法"),
    /**
     * 不支持当前媒体类型
     */
    MEDIA_TYPE_NOT_SUPPORTED_ERROR(ResultErrorCode.MEDIA_TYPE_NOT_SUPPORTED_CODE, "不支持当前媒体类型"),
    /**
     * 不接受的媒体类型
     */
    MEDIA_TYPE_NOT_ACCEPT_ERROR(ResultErrorCode.MEDIA_TYPE_NOT_ACCEPT_CODE, "不接受的媒体类型"),
    /**
     * 数据不存在
     */
    DATA_NOT_EXIST_ERROR(ResultErrorCode.DATA_NOT_EXIST_CODE, "数据不存在"),
    /**
     * 数据已存在
     */
    DATA_EXISTED_ERROR(ResultErrorCode.DATA_EXISTED_CODE, "数据已存在"),
    /**
     * 数据添加失败,请重试或联系管理员！
     */
    DATA_ADD_ERROR(ResultErrorCode.DATA_ADD_CODE, "数据添加失败,请重试或联系管理员！"),
    /**
     * 数据更新失败,请重试或联系管理员！
     */
    DATA_UPDATE_ERROR(ResultErrorCode.DATA_UPDATE_CODE, "数据更新失败,请重试或联系管理员！"),
    /**
     * 数据状态更新失败,请重试或联系管理员！
     */
    DATA_STATUS_ERROR(ResultErrorCode.DATA_STATUS_CODE, "数据状态更新失败,请重试或联系管理员！"),
    /**
     * 数据删除失败,请重试或联系管理员！
     */
    DATA_REMOVE_ERROR(ResultErrorCode.DATA_REMOVE_CODE, "数据删除失败,请重试或联系管理员！"),
    /**
     * 数据导入失败,请重试或联系管理员！
     */
    DATA_IMPORT_ERROR(ResultErrorCode.DATA_IMPORT_CODE, "数据导入失败,请重试或联系管理员！"),
    /**
     * 数据导出失败,请重试或联系管理员！
     */
    DATA_EXPORT_ERROR(ResultErrorCode.DATA_EXPORT_CODE, "数据导出失败,请重试或联系管理员！"),
    /**
     * 文件下载失败,请重试或联系管理员！
     */
    DATA_DOWNLOAD_ERROR(ResultErrorCode.DATA_DOWNLOAD_CODE, "文件下载失败,请重试或联系管理员！"),
    /**
     * 文件下载失败,请重试或联系管理员！
     */
    DATA_UPLOAD_ERROR(ResultErrorCode.DATA_UPLOAD_CODE, "数据下载失败,请重试或联系管理员！"),
    /**
     * 请求数据提交过快,请勿频繁操作！
     */
    DATA_AUDIT_ERROR(ResultErrorCode.DATA_AUDIT_CODE, "请求数据提交过快,请勿频繁操作！"),
    /**
     * 安全令牌失效
     */
    AUTH_INVALID_TOKEN(ResultErrorCode.AUTH_INVALID_TOKEN_CODE, "安全令牌失效"),
    /**
     * 验证码输入有误,请重新输入
     */
    AUTH_INVALID_CAPTCHA(ResultErrorCode.AUTH_INVALID_CAPTCHA_CODE, "验证码输入有误,请重新输入"),
    /**
     * 无效请求
     */
    AUTH_INVALID_REQUEST(ResultErrorCode.AUTH_INVALID_REQUEST_CODE, "无效请求"),
    /**
     * 未授权客户端
     */
    AUTH_INVALID_CLIENT(ResultErrorCode.AUTH_INVALID_CLIENT_CODE, "未授权客户端"),
    /**
     * 不支持的授权类型
     */
    AUTH_INVALID_GRANT(ResultErrorCode.AUTH_INVALID_GRANT_CODE, "不支持的授权类型"),
    /**
     * 无效scope
     */
    AUTH_INVALID_SCOPE(ResultErrorCode.AUTH_INVALID_SCOPE_CODE, "无效scope"),
    /**
     * 授权认证异常！
     */
    AUTH_INVALID_UNKNOWN(ResultErrorCode.AUTH_INVALID_UNKNOWN_CODE, "授权认证异常！"),
    /**
     * 授权不足
     */
    AUTH_INSUFFICIENT_SCOPE(ResultErrorCode.AUTH_INSUFFICIENT_CODE, "授权不足, 缺少访问令牌！"),
    /**
     * redirect url不匹配
     */
    AUTH_REDIRECT_URI_MISMATCH(ResultErrorCode.AUTH_REDIRECT_URI_MISMATCH_CODE, "redirect url不匹配"),
    /**
     * 拒绝访问
     */
    AUTH_ACCESS_DENIED(ResultErrorCode.AUTH_ACCESS_DENIED_CODE, "无访问权限!"),
    /**
     * 不支持该方法
     */
    AUTH_METHOD_NOT_ALLOWED(ResultErrorCode.AUTH_METHOD_NOT_ALLOWED_CODE, "不支持该方法"),
    /**
     * 没有访问权限，需要进行身份认证！
     */
    AUTH_UNAUTHORIZED(ResultErrorCode.AUTH_UNAUTHORIZED_CODE, "没有访问权限，需要进行身份认证！"),
    /**
     * 账号不存在！
     */
    AUTH_USERNAME_NOT_FOUND(ResultErrorCode.AUTH_USERNAME_NOT_FOUND_CODE, "账号不存在！"),
    /**
     * 用户名或者密码输入错误！
     */
    AUTH_USERNAME_OR_PASSWORD_ERROR(
            ResultErrorCode.USERNAME_OR_PASSWORD_ERROR_CODE, "用户名或者密码输入错误！"),
    /**
     * 账号已被停用！
     */
    AUTH_USERNAME_DISABLED(ResultErrorCode.AUTH_USERNAME_DISABLED_CODE, "账号已被停用！"),
    /**
     * 密码输入错误
     */
    AUTH_INVALID_PASSWORD(ResultErrorCode.AUTH_INVALID_PASSWORD_CODE, "密码输入错误！");

    /**
     * 返回编码
     */
    final Integer code;
    /**
     * 返回消息
     */
    final String message;

    /**
     * 结果成功编码
     */
    public static class ResultErrorCode {

        /**
         * 默认失败的编码
         */
        public static final Integer DEFAULT_ERROR_CODE = 500;

        /*======================= 资源错误 ============================*/

        public static final Integer RESOURCE_NOT_FOUND_CODE = 404;

        /*======================= 客户端错误 ============================*/

        /**
         * 缺少必要的请求参数
         */
        static final Integer PARAM_MISS_CODE = 411;
        /**
         * 参数请求类型错误
         */
        static final Integer PARAM_TYPE_ERROR_CODE = 412;
        /**
         * 参数请求绑定错误
         */
        static final Integer PARAM_BIND_ERROR_CODE = 413;
        /**
         * 参数校验失败
         */
        static final Integer PARAM_VALID_ERROR_CODE = 414;
        /**
         * 参数请求重复错误
         */
        static final Integer PARAM_REPEAT_ERROR_CODE = 415;
        /**
         * 不支持当前请求方法
         */
        static final Integer METHOD_NOT_SUPPORTED_CODE = 416;
        /**
         * 不接受的文件类型
         */
        static final Integer MEDIA_TYPE_NOT_ACCEPT_CODE = 417;
        /**
         * 不支持当前文件类型
         */
        static final Integer MEDIA_TYPE_NOT_SUPPORTED_CODE = 418;

        /*======================= 服务错误 ============================*/

        /**
         * 数据不存在
         */
        static final Integer DATA_NOT_EXIST_CODE = 511;
        /**
         * 数据已存在
         */
        static final Integer DATA_EXISTED_CODE = 512;
        /**
         * 数据添加失败
         */
        static final Integer DATA_ADD_CODE = 513;
        /**
         * 数据更新失败
         */
        static final Integer DATA_UPDATE_CODE = 514;
        /**
         * 数据更新失败
         */
        static final Integer DATA_STATUS_CODE = 515;
        /**
         * 数据删除失败
         */
        static final Integer DATA_REMOVE_CODE = 516;
        /**
         * 数据导入失败
         */
        static final Integer DATA_IMPORT_CODE = 517;
        /**
         * 数据导出失败
         */
        static final Integer DATA_EXPORT_CODE = 518;
        /**
         * 数据下载失败
         */
        static final Integer DATA_DOWNLOAD_CODE = 519;
        /**
         * 数据上传失败
         */
        static final Integer DATA_UPLOAD_CODE = 520;
        /**
         * 数据审核失败
         */
        static final Integer DATA_AUDIT_CODE = 521;

        /*======================= 权限错误 ============================*/

        /**
         * 业务服务异常
         */
        public static final Integer AUTH_SERVICE_ERROR_CODE = 610;
        /**
         * 无效令牌
         */
        public static final Integer AUTH_INVALID_TOKEN_CODE = 611;
        /**
         * 无效验证码
         */
        public static final Integer AUTH_INVALID_CAPTCHA_CODE = 612;
        /**
         * 无效请求
         */
        public static final Integer AUTH_INVALID_REQUEST_CODE = 613;
        /**
         * 未授权客户端
         */
        public static final Integer AUTH_INVALID_CLIENT_CODE = 614;
        /**
         * 不支持的授权类型
         */
        public static final Integer AUTH_INVALID_GRANT_CODE = 615;
        /**
         * 无效请求范围
         */
        public static final Integer AUTH_INVALID_SCOPE_CODE = 616;
        /**
         * 授权异常
         */
        public static final Integer AUTH_INVALID_UNKNOWN_CODE = 617;
        /**
         * 重定向链接不匹配
         */
        public static final Integer AUTH_REDIRECT_URI_MISMATCH_CODE = 618;
        /**
         * 拒绝访问
         */
        public static final Integer AUTH_ACCESS_DENIED_CODE = 619;
        /**
         * 身份验证不足
         */
        public static final Integer AUTH_INSUFFICIENT_CODE = 620;
        /**
         * 无效授权
         */
        public static final Integer AUTH_UNAUTHORIZED_CODE = 621;
        /**
         * 用户被禁用
         */
        public static final Integer AUTH_USERNAME_DISABLED_CODE = 622;

        /**
         * 用户未找到
         */
        public static final Integer AUTH_USERNAME_NOT_FOUND_CODE = 623;
        /**
         * 用户名或者密码错误
         */
        public static final Integer USERNAME_OR_PASSWORD_ERROR_CODE = 624;
        /**
         * 方法不允许请求
         */
        public static final Integer AUTH_METHOD_NOT_ALLOWED_CODE = 625;
        /**
         * 无效密码
         */
        public static final Integer AUTH_INVALID_PASSWORD_CODE = 626;


    }


}
